# 在Python中，使用def 函数名(参数)的方式来定义一个函数  definition，并且也可以使用return来进行返回
# 函数定义后，必须要调用它才能正常运行


# 无参数无返回值
def one():
    print("调用One函数.")

# 无参数有返回值
def two():
    return '这是Two函数.'   # return表示函数的返回值，可以是任意数据类型，返回给调用该函数的地方
                            # 一旦函数体内部，代码执行到return 语句，则整个函数立即结束，返回到调用它的地方

# 有参数，无返回值
def three(a):       # 形式参数，只是一个定义，在没有正式调用时，并没有值，形式参数也是函数内部的一个局部变量
    print('参数A的值是：%d.' % a)

# 有参数，有返回值
def four(a, b, c):  # 定义a, b, c三个参数，由实参传递
    result = a * b + c
    return result

# 有参数，参数有默认值的情况
def five(a, b, c, d=10):
    result = a * b + c // d
    return result



# 调用上述函数
one()
t1 = two()   # 变量t用于接收函数two的返回值
print(t1)
print(two())
three(5)   # 实际参数，实参：有实实在在值的参数
f1 = four(100, 200.5, 500)
print(f1)

f2 = five(30, 20, 50, 25)
print(f2)

f3 = five(d=25, c=50, a=30, b=20)
print(f3)

# 函数可以带参数，可以不带参数
# 函数可以有返回值，也可以没有
# 通常情况下，函数如果有参数，则实参和形参必须个数一致，位置对应，类型兼容
# 形参可以设置默认值，一旦有默认值，该形参可以不接收实参，如果仍然有实参传递，则使用实参的值
# 如果传递实参时，指定形参名=值的格式，则顺序可以忽略
# 那么，什么时候带参数，什么时候不用带，什么时候要返回值，什么时候不用返回？答案是，你需要的时候。

def power_one():
    x = int(input("请输入X:"))
    y = int(input("请输入Y:"))
    result = 1
    if y >= 0:
        for i in range(y):
            result *= x
    else:
        for i in range(-y):
            result *= x
        result = 1/result

    print(result)


def power_two(x, y):
    result = 1
    if y >= 0:
        for i in range(y):
            result *= x
    else:
        for i in range(-y):
            result *= x
        result = 1 / result
    return result


result = power_two(5, 3)
print(result * 6)




